package leetcode_900;

import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;

/**
 *@author 周杨
 *HandOfStraights_846 能否把一个数组分成W个长度连续的数组
 *describe:用优先队列 利用栈的思想 AC 80%
 *2018年11月2日 下午9:21:30
 */
public class HandOfStraights_846_ {
	public boolean isNStraightHand(int[] hand, int W) {
		if(hand.length%W!=0)
			return false;
        PriorityQueue<Integer> queue=new PriorityQueue<Integer>();
        for(int i:hand)
        	queue.offer(i);
        List<Integer> temp=new ArrayList<Integer>();
        while(!queue.isEmpty()) {
        	int size=1;
        	int now=queue.poll();
        	while(size!=W) {
        		if(queue.isEmpty())
        			return false;
        		if(queue.peek()==now+1) {
        			now++;
        			queue.poll();
        			size++;
        		}
        		else {
        			temp.add(queue.poll());
        		}
        	}
        	queue.addAll(temp);
        	temp.clear();
        }
        return true;
    }
}
